#ifndef POINT_OPERATOR_H
#define POINT_OPERATOR_H
typedef float Point;


class point_operator{
public:
	point_operator();
	void AddTwoPoints(Point[3], Point[3],Point[3]);
	void SubtractTwoPoints(Point[3], Point[3],Point[3]);
	void MultiplyPointByConstant(Point[3], float,Point[3]);
	Point DotProduct(Point[3], Point[3]);
	void CrossProduct(Point[3], Point[3], Point[3]);
	void Normal(Point[3][3],Point[3]);

	void SetPointEqualToPoint(Point[3], Point[3]);
	bool AreTwoPointsEqual(Point[3], Point[3]);
	bool PointIsWithinTwoPoints(Point checkpt[3], Point pt0[3], Point pt1[3]);
	Point DistanceValueOfPlaneEquation(Point[3], Point[3][3]);
	bool PointIsInsideTriangle(float tri_pts[3][3], float check_pt[3]);
	bool PointInTriangle(Point V0[3],Point U0[3],Point U1[3], Point U2[3]);
	bool AlmostEqual2sComplement(float A, float B, int maxUlps);
	bool BothPointsOnTheSameEdge(float[3], float[3], float[3][3]);
	bool FindSegmentEdgeIntersection(float p[3], float q[3], float r[3], float s[3], float pt[3]);
	bool SameSide(float[3], float[3] ,float[3], float[3]);
};

#endif